<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>4.Vue如何监测数组的改变</title>
		<!-- 引入Vue -->
		<script type="text/javascript" src="../js/vue.js"></script>
	</head>
	<body>
		<!-- 
			Vue如何监测数组的改变？			
					通过包裹数组的7个变更方法实现，本质就是做了两件事：
							(1).调用原生对应的方法对数组进行更新。
							(2).重新解析模板，进而更新页面。
					备注：在Vue的世界里，修改数组中的某一项一定要用如下方法：
							push()、pop()、shift()、unshift()、splice()、sort()、reverse()
		 -->
		<!-- 准备好一个容器-->
		<div id="demo">
			<h2>人员列表</h2>
			<ul>
				<li v-for="p in persons" :key="p.id">
					{{p.name}} - {{p.age}} - {{p.sex}}
				</li>
			</ul>
			<button @click="persons[0].age = 100">修改马冬梅的年龄为100岁</button>

			<button @click="changeMei">
				替换马冬梅的所有信息
			</button>
		</div>

		<script type="text/javascript">
			//阻止 vue 在启动时生成生产提示。
			Vue.config.productionTip = false
			
			let vm = new Vue({
				el:'#demo',
				data:{
					persons:[
						{id:'yt7657wte',name:'马冬梅',sex:'女',age:19},
						{id:'0ijdsa9u9',name:'周冬雨',sex:'女',age:20},
						{id:'popoi009d',name:'周杰伦',sex:'男',age:21},
						{id:'gtryutjty',name:'温兆伦',sex:'男',age:22}
					]
				},
				methods:{
					changeMei(){
						// 在Vue中不允许：通过数组下标直接修改数组中的某一项
						// this.persons[0] = {id:'opiu09u98y8',name:'马什么梅',sex:'男',age:50}

						//通过数组的7个变更方法操作数组，才可以被Vue监测到
						this.persons.splice(0,1,{id:'opiu09u98y8',name:'马什么梅',sex:'男',age:50})

					}
				}
			})
		</script>
	</body>
</html>